#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<string.h>
#include<sys/wait.h>

int code = 0;

int main()
{
    pid_t id = fork();
    if(id < 0)
    {
        perror("fork");
    }
    else if(id == 0)
    {
        //子进程
        
        //printf("子进程 pid = %d, ppid = %d\n", getpid(), getppid());

        int cnt = 5;
        while(cnt--)
        {
            printf("子进程%d, pid = %d, ppid = %d\n", cnt, getpid(), getppid());
            sleep(1);
        }
        //code = 10;
        ////int*p = NULL;
        ////*p = 10;
        //int ret = 10;
        //ret /= 0;
    }
    else
    {
        //父进程
        printf("父进程，pid = %d, ppid = %d\n", getpid(), getppid());
        int status = 0;
        waitpid(id, &status, 0);
        
        //printf("等待子进程成功：%d, 子进程退出信号编号：%d,子进程退出码： %d\n", id, status & 0x7f, (status >> 8) & 0xff);
        printf("等待子进程成功：%d, 子进程退出信号编号：%d,子进程退出码： %d\n", id, WIFEXITED(status), WEXITSTATUS(status));

        //printf("%d\n",code);
        //while(1)
        //{
        //    printf("父进程，pid = %d, ppid = %d\n", getpid(), getppid());
        //    sleep(1);
        //}
    }

    return 0;
}
//
//
//int sum(int top)
//{
//    int sum = 0;
//    int i = 1;
//    for(i = 1;i <= top; ++i)
//    {
//        sum += i;
//    
//    }
//    exit(1);
//
//    return sum;
//}
//
//int main()
//{
//    //printf("snowdragon writed");
//    //sleep(3);
//    //_exit(17);
//
//    //int i = 1;
//    //for(i = 1; i < 150; ++i)
//    //{
//    //    printf("%d: %s\n", i, strerror(i));
//    //}
//    printf("hello snowdragon1\n");
//    printf("hello snowdragon1\n");
//    printf("hello snowdragon1\n");
//
//    int ret = sum(100);
//    printf("%d\n", ret);
//
//
//    printf("hello snowdragon2\n");
//    printf("hello snowdragon3\n");
//    printf("hello snowdragon4\n");
//    
//    exit(1);
//    
//    printf("hello snowdragon5\n");
//    printf("hello snowdragon6\n");
//    printf("hello snowdragon7\n");
//    
//    return 0;
//}
